package wf.source.hrm.controller;

import com.baomidou.mybatisplus.plugins.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import wf.source.hrm.domain.Course;
import wf.source.hrm.es.doc.EsCourse;
import wf.source.hrm.query.CourseQuery;
import wf.source.hrm.service.ICourseService;
import wf.source.hrm.util.AjaxResult;
import wf.source.hrm.util.PageList;

import java.util.List;

@RestController
@RequestMapping("/course")
public class CourseController {
    @Autowired
    public ICourseService courseService;

    /**
     * 上线 可以多个同时上线 在es添加数据并修改数据库的状态和上架时间
     * @param ids
     * @return
     */
    @PostMapping("/onLine")//
    public AjaxResult onLine(@RequestBody List<Long> ids){
        try {
            //第二个参数是flag标记 0是上线
            courseService.onLineOrOffLine(ids,0);
            return AjaxResult.me();
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.me().setSuccess(false).setMessage("上线失败"+e.getMessage());
        }
    }

    /**
     * 下线 可以多个同时下线 1是下线 在es删除数据 修改数据库的状态和下架时间
     * @param ids
     * @return
     */
    @PostMapping("/offLine")//
    public AjaxResult offLine(@RequestBody List<Long> ids){
        try {
            //第二个参数是flag标记
            courseService.onLineOrOffLine(ids,1);
            return AjaxResult.me();
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.me().setSuccess(false).setMessage("上线失败"+e.getMessage());
        }
    }

    /**
    * 保存和修改公用的
    * @param course  传递的实体
    * @return Ajaxresult转换结果
    */
	@PutMapping
    public AjaxResult addOrUpate(@RequestBody Course course){
        try {
            if(course.getId()!= null)
                courseService.updateById(course);
            else
			    courseService.insert(course);
            return AjaxResult.me();
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.me().setMessage("保存对象失败！"+e.getMessage());
        }
    }

    /**
    * 删除对象信息
    * @param id
    * @return
    */
    @DeleteMapping(value="/{id}")
    public AjaxResult delete(@PathVariable("id") Long id){
        try {
            courseService.deleteById(id);
            return AjaxResult.me();
        } catch (Exception e) {
        e.printStackTrace();
            return AjaxResult.me().setMessage("删除对象失败！"+e.getMessage());
        }
    }


    //获取用户
    @GetMapping("/{id}")
    public Course get(@PathVariable("id")Long id)
    {
        return courseService.selectById(id);
    }


    /**
    * 查看所有的员工信息
    * @return
    */
    @GetMapping()
    public List<Course> list(){

        return courseService.selectList(null);
    }


    /**
    * 分页查询数据
    *
    * @param query 查询对象
    * @return PageList 分页对象
    */
    @PostMapping("/list")
    public PageList<Course> json(@RequestBody CourseQuery query)
    {
        Page<Course> page = new Page<Course>(query.getPage(),query.getRows());
        page = courseService.selectPage(page);
        return new PageList<Course>(page.getTotal(),page.getRecords());
    }

    /**
     * 从缓存中查课程
     * @param query
     * @return
     */
    @PostMapping("/queryCourseEs")
    public PageList<EsCourse> queryCourseEs(@RequestBody CourseQuery query){
        return courseService.queryCourseEs(query);
    }
}
